package com.ddxz.middleground.master.mapper;

import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * interface description
 *
 * @author 朱宗刚
 * @version 1.0.0
 * @date 2020/8/12
 */

@Mapper
@Repository
public interface RolePermissionMapper {
    /**
     * 获取指定权限关联的角色个数
     *
     * @param permissionId 权限标识
     * @param tenant       租户信息
     * @return 角色个数
     */
    Integer getNumByPermissionId(@Param("perId") String permissionId, @Param("tenant") String tenant);

    /**
     * 获取角色相关的权限标识清单
     *
     * @param roleIds 角色清单
     * @param tenant  租户信息
     * @return 租户标识清单
     */
    List<String> getPermissionList(@Param("roleIds") List<String> roleIds, @Param("tenant") String tenant);

    /**
     * 解除角色与权限的绑定关系
     *
     * @param roleId 角色标识
     * @param tenant 租户信息
     * @return 解绑格式
     */
    Integer removePerm(@Param("roleId") String roleId, @Param("tenant") String tenant);

    /**
     * 移除解绑的权限
     *
     * @param roleId     角色标识
     * @param permIdList 权限标识清单
     * @param tenant     租户信息
     * @return 是否解绑成功
     */
    Integer removeRolePerm(@Param("roleId") String roleId, @Param("perIdList") List<String> permIdList, @Param("tenant") String tenant);

    /**
     * 将角色与权限进行绑定
     *
     * @param roleId     角色标识
     * @param permIdList 权限标识清单
     * @param tenant     租户信息
     * @return 是否绑定成功
     */
    Integer grantRole(@Param("roleId") String roleId, @Param("perIdList") List<String> permIdList, @Param("tenant") String tenant);
}
